﻿/*
C++⽀持内置类型隐式类型转换为类类型对象，需要有相关内置类型为参数的构造函数。
构造函数前⾯加explicit就不再⽀持隐式类型转换
类类型的对象之间也可以隐式转换，需要相应的构造函数支持
*/
#include<iostream>
using namespace std;
class A {
public:
	A(int a)
		:_a(a)
	{

	}
	A(int a, int b)
		:_a(a)
		,_b(b)
	{

	}
	int GetSum()const {
		return _a + _b;
	}
	void print() {
		cout << _a << ' ' << _b << endl;
	}
private:
	int _a=3;
	int _b=3;
};
class B {
public:
	B(const A& aa)
		:_c(aa.GetSum())
	{}
private:
	int _c = 6;
};
void test01() {
	A aa1 = 1;
	aa1.print();//1 0  此时的结果表明用整形1来构造A类型的对象即对相应构造函数传参
	A aa2 = { 2,2 };
	aa2.print();//2 2  两个整形来进行类型转换应用“{}”
}
void test02() {
	A aa1 = 1;
	B bb = aa1;//类类型的对象之间也可以隐式转换，需要相应的构造函数⽀持
}
int main() {
	test01();
	return 0;
}